home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -seriously_amiga- / programming / other / cyberxxxsrc / misc / fixedpoint.mod < prev    next >
Text File  |  1999-02-08  |  2KB  |  60 lines

  1. MODULE  FixedPoint;
  2.  
  3. (* $StackChk- $OvflChk- $RangeChk- $CaseChk- $ReturnChk- $NilChk- $TypeChk- $OddChk- $ClearVars- *)
  4.  
  5. (* /// -------------------------------- "TYPE" --------------------------------- *)
  6. TYPE    FixedPoint16 * =INTEGER;
  7.         FixedPoint32 * =LONGINT;
  8. (* \\\ ------------------------------------------------------------------------- *)
  9.  
  10. (* /// ----------------------- "PROCEDURE FP16toREAL()" ------------------------ *)
  11. PROCEDURE FP16toREAL * (fp: FixedPoint16): REAL;
  12.  
  13. VAR     real: REAL;
  14.  
  15. BEGIN
  16.   real:=fp/256;
  17.   IF real<0 THEN real:=real+256.0; END;
  18.   RETURN real;
  19. END FP16toREAL;
  20. (* \\\ ------------------------------------------------------------------------- *)
  21.  
  22. (* /// ------------------------ "PROCEDURE FP16toINT()" ------------------------ *)
  23. PROCEDURE FP16toINT * (fp: FixedPoint16): LONGINT;
  24.  
  25. VAR     int: LONGINT;
  26.  
  27. BEGIN
  28.   int:=ENTIER(fp/256+0.5);
  29.   IF int<0 THEN INC(int,256); END;
  30.   RETURN int;
  31. END FP16toINT;
  32. (* \\\ ------------------------------------------------------------------------- *)
  33.  
  34. (* /// ----------------------- "PROCEDURE FP32toREAL()" ------------------------ *)
  35. PROCEDURE FP32toREAL * (fp: FixedPoint32): REAL;
  36.  
  37. VAR     real: REAL;
  38.  
  39. BEGIN
  40.   real:=fp/65536;
  41.   IF real<0 THEN real:=real+65536.0; END;
  42.   RETURN real;
  43. END FP32toREAL;
  44. (* \\\ ------------------------------------------------------------------------- *)
  45.  
  46. (* /// ------------------------ "PROCEDURE FP32toINT()" ------------------------ *)
  47. PROCEDURE FP32toINT * (fp: FixedPoint32): LONGINT;
  48.  
  49. VAR     int: LONGINT;
  50.  
  51. BEGIN
  52.   int:=ENTIER(fp/65536+0.5);
  53.   IF int<0 THEN INC(int,65536); END;
  54.   RETURN int;
  55. END FP32toINT;
  56. (* \\\ ------------------------------------------------------------------------- *)
  57.  
  58. END FixedPoint.
  59.  
  60.